home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / sgesum.z / sgesum
Encoding:
Text File  |  2002-10-03  |  19.8 KB  |  397 lines

  1.  
  2.  
  3.  
  4. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SSSSGGGGEEEESSSSUUUUMMMM, DDDDGGGGEEEESSSSUUUUMMMM, CCCCGGGGEEEESSSSUUUUMMMM, ZZZZGGGGEEEESSSSUUUUMMMM - Adds a scalar multiple of a real or
  10.      complex matrix to a scalar multiple of another real or complex matrix
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      Single precision
  14.  
  15.           Fortran:
  16.                CCCCAAAALLLLLLLL SSSSGGGGEEEESSSSUUUUMMMM ((((_t_r_a_n_s,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b_e_t_a,,,, _b,,,, _l_d_b))))
  17.  
  18.           C/C++:
  19.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  20.                vvvvooooiiiidddd ssssggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ffffllllooooaaaatttt _a_l_p_h_a,,,, ffffllllooooaaaatttt *_a,,,,
  21.                iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt _b_e_t_a,,,, ffffllllooooaaaatttt *_b,,,, iiiinnnntttt _l_d_b))));;;;
  22.  
  23.      Double precision
  24.  
  25.           Fortran:
  26.  
  27.                CCCCAAAALLLLLLLL DDDDGGGGEEEESSSSUUUUMMMM ((((_t_r_a_n_s,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b_e_t_a,,,, _b,,,, _l_d_b))))
  28.  
  29.           C/C++:
  30.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  31.                vvvvooooiiiidddd ddddggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ddddoooouuuubbbblllleeee _a_l_p_h_a,,,, ddddoooouuuubbbblllleeee
  32.                *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee _b_e_t_a,,,, ddddoooouuuubbbblllleeee *_b,,,, iiiinnnntttt _l_d_b))));;;;
  33.  
  34.      Single precision complex
  35.  
  36.           Fortran:
  37.                CCCCAAAALLLLLLLL CCCCGGGGEEEESSSSUUUUMMMM ((((_t_r_a_n_s,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b_e_t_a,,,, _b,,,, _l_d_b))))
  38.  
  39.           C/C++:
  40.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  41.                vvvvooooiiiidddd ccccggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,,
  42.                ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b,,,,
  43.                iiiinnnntttt _l_d_b))));;;;
  44.  
  45.           C++ STL:
  46.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  47.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  48.                vvvvooooiiiidddd ccccggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,,
  49.                ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b_e_t_a,,,,
  50.                ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;;
  51.  
  52.      Double precision complex
  53.  
  54.           Fortran:
  55.                CCCCAAAALLLLLLLL ZZZZGGGGEEEESSSSUUUUMMMM ((((_t_r_a_n_s,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b_e_t_a,,,, _b,,,, _l_d_b))))
  56.  
  57.           C/C++:
  58.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  59.                vvvvooooiiiidddd zzzzggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,,
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  71.  
  72.  
  73.  
  74.                ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b,,,,
  75.                iiiinnnntttt _l_d_b))));;;;
  76.  
  77.           C++ STL:
  78.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  79.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  80.                vvvvooooiiiidddd zzzzggggeeeessssuuuummmm ((((cccchhhhaaaarrrr *_t_r_a_n_s,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,,
  81.                ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b_e_t_a,,,,
  82.                ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;;
  83.  
  84. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  85.      These routines are part of the SCSL Scientific Library and can be loaded
  86.      using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option.  The ----llllssssccccssss____mmmmpppp option
  87.      directs the linker to use the multi-processor version of the library.
  88.  
  89.      When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is
  90.      4 bytes (32 bits). Another version of SCSL is available in which integers
  91.      are 8 bytes (64 bits).  This version allows the user access to larger
  92.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  93.      by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use
  94.      only one of the two versions; 4-byte integer and 8-byte integer library
  95.      calls cannot be mixed.
  96.  
  97.      The C and C++ prototypes shown above are appropriate for the 4-byte
  98.      integer version of SCSL. When using the 8-byte integer version, the
  99.      variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header
  100.      file should be included.
  101.  
  102. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  103.      SSSSGGGGEEEESSSSUUUUMMMM and DDDDGGGGEEEESSSSUUUUMMMM add two real matrices with optional scaling; CCCCGGGGEEEESSSSUUUUMMMM and
  104.      ZZZZGGGGEEEESSSSUUUUMMMM add two complex matrices.
  105.  
  106.           _B <- _a_l_p_h_a _o_p(_A) + _b_e_t_a _B
  107.  
  108.      where
  109.  
  110.      *   _o_p(_A) represents _A, its transpose _A_T, or its conjugate transpose _A_H
  111.  
  112.      *   _o_p(_A) and _B are _m-by-_n matrices
  113.  
  114.      *   _a_l_p_h_a and _b_e_t_a are scalars.
  115.  
  116.      _b_e_t_a=0 is a special case, used to copy _a_l_p_h_a*_o_p(_A) to _B.
  117.  
  118.      _a_l_p_h_a=0 is a special case, used to scale _B.
  119.  
  120.      These routines have the following arguments:
  121.  
  122.      _t_r_a_n_s     Character.  (input)
  123.                Specifies whether the matrix _A is transposed.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  137.  
  138.  
  139.  
  140.                _t_r_a_n_s = 'N' or 'n':  _o_p(_A) = _A
  141.  
  142.                _t_r_a_n_s = 'T' or 't':  _o_p(_A) = _A _T
  143.  
  144.                _t_r_a_n_s = 'C' or 'c':  _o_p(_A) = _A_T (SSSSGGGGEEEESSSSUUUUMMMM, DDDDGGGGEEEESSSSUUUUMMMM), or
  145.  
  146.                _o_p(_A) = _A_H (CCCCGGGGEEEESSSSUUUUMMMM, ZZZZGGGGEEEESSSSUUUUMMMM)
  147.  
  148.                For C/C++, a pointer to this character is passed.
  149.  
  150.      _m         Integer.  (input)
  151.                Specifies the number of rows in matrix _o_p(_A) and in matrix _B.
  152.  
  153.      _n         Integer.  (input)
  154.                Specifies the number of columns in matrix _o_p(_A) and in matrix
  155.                _B.
  156.  
  157.      _a_l_p_h_a     Scalar alpha.  (input)
  158.                SSSSGGGGEEEESSSSUUUUMMMM: Single precision.
  159.                DDDDGGGGEEEESSSSUUUUMMMM: Double precision.
  160.                CCCCGGGGEEEESSSSUUUUMMMM: Single precision complex.
  161.                ZZZZGGGGEEEESSSSUUUUMMMM: Double precision complex.
  162.  
  163.                For C/C++, a pointer to this scalar is passed when alpha is
  164.                complex; otherwise, alpha is passed by value.
  165.  
  166.      _a         Array of dimension (_l_d_a,_k).  (input)
  167.                SSSSGGGGEEEESSSSUUUUMMMM: Single precision array.
  168.                DDDDGGGGEEEESSSSUUUUMMMM: Double precision array.
  169.                CCCCGGGGEEEESSSSUUUUMMMM: Single precision complex array.
  170.                ZZZZGGGGEEEESSSSUUUUMMMM: Double precision complex array.
  171.  
  172.                When _t_r_a_n_s = 'N' or 'n', _k is _n; otherwise, it is _m.  When
  173.                _t_r_a_n_s = 'N' or 'n', the leading _m-by-_n part of the array _a
  174.                contains matrix _A.  When _t_r_a_n_s = 'T' or 't' or _t_r_a_n_s =  'C' or
  175.                'c', the leading _n-by-_m part or the array _a contains matrix _A,
  176.                whose transpose or conjugate transpose will be used in the
  177.                matrix sum.  If _a_l_p_h_a = 0, _a need not be specified on entry.
  178.  
  179.      _l_d_a       Integer.  (input)
  180.                Specifies the first dimension of _a as declared in the calling
  181.                program.  When _t_r_a_n_s = 'N' or 'n', _l_d_a >= MMMMAAAAXXXX(1,_m); otherwise,
  182.                _l_d_a >= MMMMAAAAXXXX(1,_n).
  183.  
  184.      _b_e_t_a      Scalar beta.  (input)
  185.                SSSSGGGGEEEESSSSUUUUMMMM: Single precision.
  186.                DDDDGGGGEEEESSSSUUUUMMMM: Double precision.
  187.                CCCCGGGGEEEESSSSUUUUMMMM: Single precision complex.
  188.                ZZZZGGGGEEEESSSSUUUUMMMM: Double precision complex.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  203.  
  204.  
  205.  
  206.                For C/C++, a pointer to this scalar is passed when beta is
  207.                complex; otherwise, beta is passed by value.
  208.  
  209.      _b         Array of dimension (_l_d_b,_n).  (input/output)
  210.                SSSSGGGGEEEESSSSUUUUMMMM: Single precision array.
  211.                DDDDGGGGEEEESSSSUUUUMMMM: Double precision array.
  212.                CCCCGGGGEEEESSSSUUUUMMMM: Single precision complex array.
  213.                ZZZZGGGGEEEESSSSUUUUMMMM: Double precision complex array.
  214.                On entry, if _b_e_t_a is not equal to 0, the _m-by-_n matrix _b
  215.                contains _B.  (If _b_e_t_a = 0, _b need not be specifed on entry.)
  216.                On exit, _b is overwritten with the matrix sum (_a_l_p_h_a*_o_p(_A) +
  217.                _b_e_t_a*_B).
  218.  
  219.      _l_d_b       Integer.  (input)
  220.                The leading dimension of array _b.  _l_d_b >= MMMMAAAAXXXX(1,_m).
  221.  
  222. NNNNOOOOTTTTEEEESSSS
  223.      These routines are extensions to the Level 2 BLAS.
  224.  
  225.      The following data types are described in this documentation:
  226.  
  227.           TTTTeeeerrrrmmmm UUUUsssseeeedddd                     DDDDaaaattttaaaa ttttyyyyppppeeee
  228.  
  229.      Fortran:
  230.  
  231.           Array dimensioned _n           xxxx((((nnnn))))
  232.  
  233.           Array of dimensions (_m,_n)     xxxx((((mmmm,,,,nnnn))))
  234.  
  235.           Character                     CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR
  236.  
  237.           Integer                       IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  238.  
  239.           Single precision              RRRREEEEAAAALLLL
  240.  
  241.           Double precision              DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN
  242.  
  243.           Single precision complex      CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  244.  
  245.           Double precision complex      DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  246.  
  247.      C/C++:
  248.  
  249.           Array dimensioned _n           xxxx[[[[_n]]]]
  250.  
  251.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  252.  
  253.           Character                     cccchhhhaaaarrrr
  254.  
  255.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  269.  
  270.  
  271.  
  272.           Single precision              ffffllllooooaaaatttt
  273.  
  274.           Double precision              ddddoooouuuubbbblllleeee
  275.  
  276.           Single precision complex      ssssccccssssllll____ccccoooommmmpppplllleeeexxxx
  277.  
  278.           Double precision complex      ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx
  279.  
  280.      C++ STL:
  281.  
  282.           Array dimensioned _n           xxxx[[[[_n]]]]
  283.  
  284.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  285.  
  286.           Character                     cccchhhhaaaarrrr
  287.  
  288.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  289.  
  290.           Single precision              ffffllllooooaaaatttt
  291.  
  292.           Double precision              ddddoooouuuubbbblllleeee
  293.  
  294.           Single precision complex      ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>>
  295.  
  296.           Double precision complex      ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>>
  297.  
  298.      Note that you can explicitly declare multidimensional C/C++ arrays
  299.      provided that the array dimensions are swapped with respect to the
  300.      Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran).
  301.      To avoid a compiler type mismatch error in C++ (or a compiler warning
  302.      message in C), however, the array should be cast to a pointer of the
  303.      appropriate type when passed as an argument to a SCSL routine.
  304.  
  305. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
  306.      An important use of these routines is to copy an array to another array,
  307.      in which the second array may be a temporary workspace that has a better
  308.      data layout than the first array.  For example, suppose array AAAA was
  309.      declared as follows in the main program:
  310.  
  311.           REAL A(1024, 1024)
  312.  
  313.  
  314.      The following call to SSSSGGGGEEEESSSSUUUUMMMM copies a 64-by-64 block of AAAA to BBBB:
  315.  
  316.      CALL SGESUM ('N', 64, 64 1.0, A(1,1), 1024, 0.0, B(1,1), 80)
  317.  
  318.  
  319.      Similarly, the following call copies a 64-by-64 block of the transpose of
  320.      AAAA to BBBB:
  321.  
  322.      CALL SGESUM ('T', 64, 64, 1.0, A(1,1), 1024, 0.0, B(1,1), 80)
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))                                                          SSSSGGGGEEEESSSSUUUUMMMM((((3333SSSS))))
  335.  
  336.  
  337.  
  338. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  339.      IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S), SSSSAAAAXXXXPPPPBBBBYYYY(3S)
  340.  
  341.      IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77
  342.      Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic
  343.      Linear Algebra Subprograms Technical Forum.
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.                                                                         PPPPaaaaggggeeee 6666
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.